package com.hsnn.medstgmini.pro.project.controller;

import java.io.UnsupportedEncodingException;
import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.hsnn.medstgmini.Constants;
import com.hsnn.medstgmini.pro.project.model.form.BidScoreRuleForm;
import com.hsnn.medstgmini.pro.project.service.BidProjectManager;
import com.hsnn.medstgmini.pro.project.service.BidScoreRuleManager;
import com.hsnn.medstgmini.sys.model.SysUser;
import com.hsnn.medstgmini.util.Pagination;
/**
 * 
 *@category 评分指标管理
 *@author 邱磊
 *@date 2015年9月8日 上午9:52:43
 */
@Controller
@RequestMapping("/bidScoreRule")
public class BidScoreRuleController {
	@Autowired
	private HttpServletRequest request;
	@Autowired
	private BidScoreRuleManager manager;
	@Autowired
	private BidProjectManager projManager;
	/**
	 * 
	 *@category 向评分指标设置项目列表页面（药品招标管理--评标管理--评分指标设置）
	 *@author 邱磊
	 *@date 2015年9月8日 下午1:51:46
	 *@return
	 */
	@RequestMapping("/toscoreRuleProjList")
	public String toscoreRuleProjList(){
		return "/pro/project/scoreRuleProjList";
	}
	/**
	 * 
	 *@category 向评分指标设置页面（药品招标管理--评标管理--评分指标设置<企业资质指标设置>）
	 *@author 邱磊
	 *@date 2015年9月8日 上午10:32:13
	 *@return
	 */
	@RequestMapping("/toSetCompScoreRule")
	public String toSetCompScoreRule(){
		String projId = request.getParameter("projId");
		List<BidScoreRuleForm> compScoreList = manager.getCompScoreSet(projId);
//		List<Object> drugScoreList = manager.getDrugScoreSet(projId);
//		List<Object> subjectScoreList = manager.getSubjectScoreSet(projId);
		request.setAttribute("compScoreList", compScoreList);
//		request.setAttribute("drugScoreList", drugScoreList);
//		request.setAttribute("subjectScoreList", subjectScoreList);
		return "/pro/project/setCompScoreRule";
	}
	/**
	 * 
	 *@category 向评分指标设置页面（药品招标管理--评标管理--评分指标设置<药品资质指标设置>）
	 *@author 邱磊
	 *@date 2015年9月8日 上午10:32:13
	 *@return
	 */
	@RequestMapping("/toSetDrugScoreRule")
	public String toSetDrugScoreRule(){
		String projId = request.getParameter("projId");
//		List<BidScoreRuleForm> compScoreList = manager.getCompScoreSet(projId);
		List<BidScoreRuleForm> drugScoreList = manager.getDrugScoreSet(projId);
//		List<Object> subjectScoreList = manager.getSubjectScoreSet(projId);
//		request.setAttribute("compScoreList", compScoreList);
		request.setAttribute("drugScoreList", drugScoreList);
//		request.setAttribute("subjectScoreList", subjectScoreList);
		return "/pro/project/setDrugScoreRule";
	}
	/**
	 * 
	 *@category 向评分指标设置页面（药品招标管理--评标管理--评分指标设置<主观分指标设置>）
	 *@author 邱磊
	 *@date 2015年9月8日 上午10:32:13
	 *@return
	 */
	@RequestMapping("/toSetSubjiecScoreRule")
	public String toSetSubjiecScoreRule(){
		String projId = request.getParameter("projId");
//		List<BidScoreRuleForm> compScoreList = manager.getCompScoreSet(projId);
//		List<Object> drugScoreList = manager.getDrugScoreSet(projId);
		List<BidScoreRuleForm> subjectScoreList = manager.getSubjectScoreSet(projId);
//		request.setAttribute("compScoreList", compScoreList);
//		request.setAttribute("drugScoreList", drugScoreList);
		request.setAttribute("subjectScoreList", subjectScoreList);
		return "/pro/project/setSubjiecScoreRule";
	}
	/**
	 * 
	 *@category 设置企业资质评分指标
	 *@author 邱磊
	 *@date 2015年9月8日 下午2:59:36
	 *@return
	 */
	@RequestMapping("/setCompScoreRule")
	@ResponseBody
	public Pagination setCompScoreRule(){
		Pagination page = new Pagination();
		String array = request.getParameter("array");
		String projId = request.getParameter("projId");
		page.getConditions().put("scoreObject", request.getParameter("scoreObject"));
		page.getConditions().put("scorType", request.getParameter("scorType"));
		if (array != null && !"".equals(array)) {
			Gson gson = new Gson();
			Type type = new TypeToken<List<BidScoreRuleForm>>() {}.getType();
			List<BidScoreRuleForm> list = gson.fromJson(array, type);
			page.setRows(list);
			page.getConditions().put("projId", projId);
			SysUser user = (SysUser)request.getSession().getAttribute(Constants.USERINFO);
			page.getConditions().put("userId", user.getId());
			if (list != null && !list.isEmpty()) {
				try {
					manager.setCompScoreRule(page);
					page.setSuccess(true);
				} catch (Exception e) {
					e.printStackTrace();
					page.setMsg("操作失败！");
					page.setSuccess(false);
					return page;
				}
				return page;
			}
		}
		page.setMsg("请选择要操作的数据");
		page.setSuccess(false);
		return page;
	}
	/**
	 * 
	 *@category 跳向评分结果查看（药品招标管理--评标管理--评分结果查看）
	 *@author 邱磊
	 *@date 2015年9月8日 下午7:38:04
	 *@return
	 */
	@SuppressWarnings("unchecked")
	@RequestMapping("/toScreResultList")
	public String toScreResultList(){
		Pagination page = new Pagination();
		try {
			SysUser user = (SysUser)request.getSession().getAttribute(Constants.USERINFO);
			String projId = user.getDefaultProjId();
			if(StringUtils.isNotBlank(projId)){
				page.getConditions().put("projId", projId);
				manager.getScreResultDataList(page);
				request.setAttribute("projId", projId);
				List<Map<String,Object>> map =  (List<Map<String, Object>>) page.getRows();
				request.setAttribute("name", map.get(0).get("name"));
				request.setAttribute("qualityspecName", map.get(0).get("qualityspecName"));
				return "/pro/project/scoreResultDetail";
			}
		} catch (Exception e) {
			e.printStackTrace();
			request.setAttribute("msg", "数据异常！");
			return "/pro/project/scoreResultDetail";
		}
		return "/pro/project/screResultList";
	}
	/**
	 * 
	 *@category 获取评分结果
	 *@author 邱磊
	 *@date 2015年9月8日 下午7:40:16
	 *@return
	 */
	@RequestMapping("/getScreResultDataList")
	@ResponseBody
	public Pagination getScreResultDataList(){
		Pagination page = new Pagination(request);
		page.getConditions().put("projId", request.getParameter("projId"));
		page.getConditions().put("drugCode", request.getParameter("drugCode"));
		page.getConditions().put("qualityspecName", request.getParameter("qualityspecName"));
		page.getConditions().put("compCode", request.getParameter("compCode"));
		page.getConditions().put("compName", request.getParameter("compName"));
		return manager.getScreResultDataList(page);
	}
	/**
	 * 
	 *@category 跳向得分详情页面（药品招标管理--评标管理--评分结果查看<详情>）
	 *@author 邱磊
	 *@date 2015年9月9日 上午10:18:08
	 *@return
	 * @throws UnsupportedEncodingException 
	 */
	@RequestMapping("/toScoreResultDetail")
	public String toScoreResultDetail(){
		String name = request.getParameter("name");
		if (StringUtils.isNotBlank(name)){
			try {
				request.setAttribute("name", new String(name.getBytes("ISO8859-1"),"utf-8"));
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
		}
		String qualityspecName = request.getParameter("qualityspecName");
		if (StringUtils.isNotBlank(qualityspecName)){
			try {
				request.setAttribute("qualityspecName",new String(qualityspecName.getBytes("ISO8859-1"),"utf-8"));
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
		}
		return "/pro/project/scoreResultDetail";
	}
	/**
	 * 
	 *@category 获取得分详情
	 *@author 邱磊
	 *@date 2015年9月9日 上午10:21:54
	 *@return
	 */
	@RequestMapping("/getScoreResultDetail")
	@ResponseBody
	public Pagination getScoreResultDetail(){
		Pagination page = new Pagination(request);
		page.getConditions().put("bidProjdrugsScoreId", request.getParameter("bidProjdrugsScoreId"));
		return manager.getScoreResultDetail(page);
	}
	/**
	 * 
	 *@category 跳向报价解密查看页面（药品招标管理--评标管理--报价解密查看）
	 *@author 邱磊
	 *@date 2015年9月9日 下午1:18:19
	 *@return
	 */
	@RequestMapping("/toViewDrugPriceList")
	public String toViewDrugPriceList(){
		try {
			SysUser user = (SysUser)request.getSession().getAttribute(Constants.USERINFO);
			String projId  = user.getDefaultProjId();
			if(StringUtils.isNotBlank(projId)){
				Map<String,String> projMap = projManager.getDrugCountById(projId);
				request.setAttribute("projMap", projMap);
				request.setAttribute("projId", projId);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "/pro/project/viewDrugPriceList";
	}
	
	@RequestMapping("/getProjectData")
	@ResponseBody
	public Pagination getProjectData(){
		Pagination page = new Pagination();
		try {
			String projId = request.getParameter("projId");
			Map<String,String> projMap = projManager.getDrugCountById(projId);
			page.setRows(projMap);
			page.setSuccess(true);
		} catch (Exception e) {
			page.setSuccess(false);
			page.setMsg("数据异常");
			e.printStackTrace();
		}
		return page;
	}
	/**
	 * 
	 *@category 获取申报药品信息列表（用于：报价解密查看，商务标入围查看，拟中标目录查看，中标目录查看）
	 *@author 邱磊
	 *@date 2015年9月9日 下午1:20:28
	 *@return
	 */
	@RequestMapping("/getViewProjDrugList")
	@ResponseBody
	public Pagination getViewDrugPriceList(){
		Pagination page = new Pagination(request);
		page.getConditions().put("projId", request.getParameter("projId"));
		page.getConditions().put("projCat", request.getParameter("projCat"));
		page.getConditions().put("drugCode", request.getParameter("drugCode"));
		page.getConditions().put("qualityspecName", request.getParameter("qualityspecName"));
		page.getConditions().put("compCode", request.getParameter("compCode"));
		page.getConditions().put("compName", request.getParameter("compName"));
		page.getConditions().put("isBusScope", request.getParameter("isBusScope"));
		page.getConditions().put("isSemiBidding", request.getParameter("isSemiBidding"));
		page.getConditions().put("isBidding", request.getParameter("isBidding"));
		page.getConditions().put("decryptStatus", request.getParameter("decryptStatus"));
		return manager.getViewDrugPriceList(page);
	}
	/**
	 * 
	 *@category 跳向商务标入围查看页面（药品招标管理--评标管理--商务标入围查看）
	 *@author 邱磊
	 *@date 2015年9月9日 下午3:17:36
	 *@return
	 */
	@RequestMapping("/toViewBusScope")
	public String toViewBusScope(){
		return "/pro/project/viewBusScope";
	}
	/**
	 * 
	 *@category 跳向拟中标目录查看页面（药品招标管理--评标管理--拟中标目录查看）
	 *@author 邱磊
	 *@date 2015年9月9日 下午3:17:36
	 *@return
	 */
	@RequestMapping("/toViewSemiBidding")
	public String toViewSemiBidding(){
		return "/pro/project/viewSemiBidding";
	}
	/**
	 * 
	 *@category 跳向中标目录查看页面（药品招标管理--评标管理--中标目录查看）
	 *@author 邱磊
	 *@date 2015年9月9日 下午3:17:36
	 *@return
	 */
	@RequestMapping("/toViewBidding")
	public String toViewBidding(){
		return "/pro/project/viewBidding";
	}
	
	/**
	 * 
	 *@category 跳转实时查看
	 *@author wangbing
	 *@date 2015年9月8日 下午1:51:46
	 *@return
	 */
	@RequestMapping("/toRealTimeSeeList")
	public String toRealTimeSeeList(){
		request.setAttribute("projId", request.getParameter("projId"));
		return "/pro/project/realTimeSeeList";
	}
	
	/**
	 * 
	 *@category 获取解密企业
	 *@author wangbing
	 *@date 2015年9月9日 下午1:20:28
	 *@return
	 */
	@RequestMapping("/getDecryptCompList")
	@ResponseBody
	public Pagination getDecryptCompList(){
		Pagination page = new Pagination(request);
		String projId = request.getParameter("projId");
		if(StringUtils.isNotBlank(projId)){
			page.getConditions().put("projId", projId);
		}else{
			return page;
		}
		try {
			manager.getDecryptCompList(page);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return page;
	}
	
	/**
	 * 
	 *@category 获取解密药品
	 *@author wangbing
	 *@date 2015年9月9日 下午1:20:28
	 *@return
	 */
	@RequestMapping("/getDecryptDrugList")
	@ResponseBody
	public Pagination getDecryptDrugList(){
		Pagination page = new Pagination();
		String projId = request.getParameter("projId");
		if(StringUtils.isNotBlank(projId)){
			page.getConditions().put("projId", projId);
		}else{
			return page;
		}
		try {
			manager.getDecryptDrugList(page);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return page;
	}
}
